package com.southminority.ethnic.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Max;
import java.time.LocalDate;

/**
 * 古籍文献DTO
 * 
 * @author SouthMinority
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class DocumentDTO extends BaseDTO {

    /**
     * 文献标题
     */
    @NotBlank(message = "文献标题不能为空")
    @Size(max = 300, message = "文献标题长度不能超过300个字符")
    private String title;

    /**
     * 原始标题
     */
    @Size(max = 300, message = "原始标题长度不能超过300个字符")
    private String originalTitle;

    /**
     * 作者
     */
    @Size(max = 200, message = "作者长度不能超过200个字符")
    private String author;

    /**
     * 朝代
     */
    @Size(max = 50, message = "朝代长度不能超过50个字符")
    private String dynasty;

    /**
     * 年代
     */
    @Min(value = 1, message = "年代必须大于0")
    @Max(value = 9999, message = "年代不能超过9999")
    private Integer year;

    /**
     * 分类ID
     */
    private Long categoryId;

    /**
     * 文献类型
     */
    @Size(max = 50, message = "文献类型长度不能超过50个字符")
    private String documentType;

    /**
     * 语言
     */
    @Size(max = 50, message = "语言长度不能超过50个字符")
    private String language;

    /**
     * 文献描述
     */
    private String description;

    /**
     * 文献内容
     */
    private String content;

    /**
     * 原文内容
     */
    private String originalContent;

    /**
     * 翻译内容
     */
    private String translation;

    /**
     * 注释
     */
    private String annotation;

    /**
     * 来源
     */
    @Size(max = 200, message = "来源长度不能超过200个字符")
    private String source;

    /**
     * 收集者
     */
    @Size(max = 100, message = "收集者长度不能超过100个字符")
    private String collector;

    /**
     * 收集日期
     */
    private LocalDate collectionDate;

    /**
     * 数字化日期
     */
    private LocalDate digitizationDate;

    /**
     * 封面图片URL（新增）
     */
    private String coverImageUrl;

    /**
     * 图片URLs（JSON格式）
     */
    private String imageUrls;

    /**
     * PDF文件URL
     */
    private String pdfUrl;

    /**
     * 音频文件URL
     */
    private String audioUrl;

    /**
     * 视频文件URL
     */
    private String videoUrl;

    /**
     * 附件文件URLs（JSON或分隔字符串，后台按需解析）（新增）
     */
    private String attachmentUrls;

    /**
     * 关键词
     */
    @Size(max = 300, message = "关键词长度不能超过300个字符")
    private String keywords;

    /**
     * 标签
     */
    @Size(max = 200, message = "标签长度不能超过200个字符")
    private String tags;

    /**
     * 是否首页展示：1-是，0-否
     */
    private Integer isFeatured;

    /**
     * 首页展示顺序
     */
    private Integer homepageOrder;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 状态：1-已发布，0-草稿，-1-已删除
     */
    private Integer status;
} 
